const Router = require('koa-router');

const commentRouter = new Router({prefix: '/comment'});

const {
    create,
    reply,
    update,
    remove,
    list
} = require('../controller/comment.controller');

const { 
    verifyAuth,
    verifyPermission
} = require('../middleware/auth.middleware');

/**
 * 功能：对某条动态进行评论
 * URL参数：使用JSON格式进行传参：1.评论的内容(content) 2.被评论动态的id(moment_id),评论者的id(user_id)
 */
commentRouter.post('/', verifyAuth, create);       

/**
 * 功能：回复评论接口
 * URL参数:1.被回复评论的id 2.评论的内容 3.评论者的id 4.被评论动态的id(contnt_id)，虽然是回复评论，但是依然是某条动态下的评论
 *         5.被回复评论的id
 */
commentRouter.post('/:comment_id/reply', verifyAuth, reply);       



/**
 * 功能：修改用户评论
 * URL参数：要修改的评论的id 
 */
commentRouter.patch('/:commentId', verifyAuth,  verifyPermission, update);

/**
 *  功能：删除用户评论
 *  URL参数：传入要删除评论的id
 *  删除用户评论接口(注：因为我们在建表时moment_id字段是外键，基于moment表的id字段并且设置了ON DELETE CASCADE，
 *  所以如果moment表中的某条数据被删除，那么这条数据的id所关联的外键中对应的数据也会被一并删除，
    因为comment_id字段是外键，它基于本表中的id字段，并且并且设置了ON DELETE CASCADE，所以如果删掉了评论，那么所有基于这条评论评论的评论也会自动被删除)
 *  
 */
commentRouter.delete('/:commentId', verifyAuth, verifyPermission, remove);

/**
 * 功能：获取某条动态的评论列表
 * URL参数：根据comment表中的moment_id字段查询，
 *   127.0.0.1:8000/comment?momentId=3
 */
commentRouter.get('/', list);


module.exports = commentRouter;